草庐IT

SQLite 和并发

全部标签

java - 信号量 - 为什么我的线程一个接一个地运行而不是并发运行?

我正在尝试编写一个程序,在Main类中可以启动未知数量的新线程。每个线程依次调用SingletonCopier类,该类应调用文件传输操作。我的目标是,无论线程请求的数量如何,都是将并发传输的数量限制为2个传输,所以我想用Semaphore来解决它。我的问题是,线程似乎一个接一个地运行,而不是并发运行。这是我尝试做的:publicclassCopier{privatestaticfinalintPOOL_SIZE=2;privatestaticvolatileCopierinstance=null;privatestaticSemaphoresemaphore;privateCopier

java - 以并发方式逐行处理文件

现在我正在做一份关于数据格式转换的工作。有一个大文件,比如10GB,我目前实现的解决方案是逐行读取这个文件,转换每一行的格式,然后输出到一个输出文件。我发现转换过程是一个瓶颈。所以我正在尝试以并发方式执行此操作。每一行都是一个完整的单元,与其他行无关。有些行可能会因为行中的某些特定值不满足需求而被丢弃。现在我有两个计划:一个线程从输入文件中逐行读取数据,然后将行放入队列,多个线程从队列中获取行,转换格式,然后将行放入输出队列,最后一个输出线程从输出队列中读取行并写入输出文件。多个线程当前从输入文件的不同部分读取数据,然后处理行并通过输出队列或文件锁输出到文件。你们能给我一些建议吗?我真

java - 具有弱键的并发映射

我有一个高度并发的应用程序,它使用文件系统上的资源。两个线程同时访问同一资源的可能性很小,但如果发生这种情况,应用程序可能会显示有线行为。每个资源都可以通过String坐标vector进行映射(绑定(bind)在ResourceIdentifier类中)。在我当前的解决方案中,我创建了此类资源标识符的ConcurrentMap以收集线程在访问资源时使用的监视器:(ResourceIdentifier覆盖equals和hashCode正确。)ConcurrentMapconcurrentMap=newConcurrentHashMap();publicObjectaquireMonito

Java 并发 : lock effiency

我的程序有100个线程。每个线程都这样做:1)如果arrayList为空,则向其添加具有特定属性的元素2)如果arrayList不为空,遍历arrayList中找到的元素,如果找到合适的元素(匹配某些属性),获取并移除arrayList这里的问题是,当一个线程遍历arrayList时,其他99个线程正在等待arrayList上的锁。如果我希望所有100个线程都在无锁条件下工作,您会给我什么建议?所以他们都有工作要做?谢谢 最佳答案 你看过sharedvsexclusive了吗?锁定?您可以在列表上使用共享锁,然后在列表元素上使用“已

java - 并发还是顺序?

我正在研究Java中的线程。我在网站上找到的以下示例:publicclassThreadTest{publicstaticvoidmain(Stringargs[]){Threadt1=newThread(newThread1());t1.start();Threadt2=newThread(newThread2());t2.start();}}publicclassThread1implementsRunnable{@Overridepublicvoidrun(){for(inti=0;i预期的结果是这样的:MonNov1120:06:12CET20130123456789MonNo

java - 如何在并发线程中操作 "ConcurrentModificationException"和 `values()` 时避免 HashMap `put()`?

代码:我有一个哈希表privateMapmap=newHashMap();一种方法通过调用put(K,V)将K-V对放入其中。另一种方法想要从它的值中提取一组随机元素:intsize=map.size();//size>0V[]value_array=map.values().toArray(newV[size]);Randomrand=newRandom();intstart=rand.nextInt(size);intend=rand.nextInt(size);//returnvalue_array[start..end-1]这两个方法在两个不同的并发线程中被调用。错误:我遇到了

java - erlang 可以处理多少并发 http 请求

我正在开发一个用于基准测试的应用程序,为此我需要在短时间内创建大量的http连接,我在java中创建了一个程序来测试java能够创建多少线程,结果在我的2GB单核机器,限制在5000到6000之间变化,为JVM提供1GB内存,之后它遇到内存不足错误并达到堆限制。建议erlang能够生成更多的并发进程,如果能解决问题我愿意学习erlang,erlang能不能生成100000左右的进程,本质上就是http请求等待响应,在几秒钟内没有达到任何限制,如内存错误等, 最佳答案 根据著名的理查德·琼斯blog您几乎可以开箱即用地处理100k连接

Java 并发修改异常

这个问题在这里已经有了答案:HowcanIiterateoveranobjectwhilemodifyingitinJava?[duplicate](6个答案)Whyisn'tthiscodecausingaConcurrentModificationException?[duplicate](4个答案)WhyisaConcurrentModificationExceptionthrownandhowtodebugit(8个答案)关闭9年前。当删除倒数第二个元素时没有ConcurrentModificationExceptionListmyList1=newArrayList();Co

Quartz集群并发执行导致重复调度问题

Quartz集群并发执行导致重复调度问题排查1.问题描述定时平台在某一时刻触发定时job时,集群中的两个调度器节点同时执行了job,导致该定时任务同一时刻下发给业务应用两次,引发并发重复调用的问题。在两台调度机器上查看调度日志,发现第一个机器节点A在12:30:00:074执行了job,第二个机器节点B在12:30:00:079也执行了job,两个节点的调度日志如下:2021-10-2912:30:00,074INFO[dspQuartzScheduler_Worker-42]com.xxx.dsp.scheduler.jobbean.RemoteHttpJobBean-dspschedule

java - 非常简单的Swing骰子程序中的神秘(并发/组件绘制?)错误

不好意思的问题标题,很抱歉,我对此错误的原因感到困惑,并且不知道如何表达该问题。我正在学习基本的Swing,并从在线书籍《Java编程简介》中学习thisexercise。我没有遵循这封信的指示,而是尝试这样做:有一个显示两个骰子的可视表示的窗口当您单击其中一个骰子时,它会“滚动”并显示新值我的实现:一个非常基本的JDie对象,它扩展了JPanel覆盖paintComponent方法以绘制模具表示每次更改值都会更改模具颜色,仅用于视觉提示添加了一个监听器,以在按下鼠标然后“掷出”骰子时重绘(repaint)该错误非常具体:运行DieTest主方法调整窗口大小以适合两个模具单击第二个骰子